﻿using System.Collections.Generic;
using Dogshow.BusinessLogic.Utils;
using Dogshow.Model;
using Dogshow.Web.Models;
using DogshowRepository;

namespace Dogshow.BusinessLogic.Managers
{
    public class KorisniciManager
    {
        private readonly IEncryptor m_Encryptor;

        private readonly IKorisniciRepository m_KorisniciRepository;

        private readonly IKinoloziRepository m_KinoloziRepository;

        public KorisniciManager(IEncryptor encryptor, IKorisniciRepository korisniciRepository, IKinoloziRepository kinoloziRepository)
        {
            m_Encryptor = encryptor;
            m_KorisniciRepository = korisniciRepository;
            m_KinoloziRepository = kinoloziRepository;
        }

        public void SacuvajPodatkeKorisnika(Korisnik korisnik)
        {
            if (korisnik.VidljivaLozinka != "***************")
            {
                korisnik.Lozinka = m_Encryptor.Encrypt(korisnik.VidljivaLozinka);    
            }
            if (VrsteKorisnika.Administrator == korisnik.VrstaKorisnika ||
                VrsteKorisnika.Korisnik == korisnik.VrstaKorisnika && korisnik.IdKinologa == null)
            {
                var idKinologa = m_KinoloziRepository.Sacuvaj(new Kinolog());
                korisnik.IdKinologa = idKinologa;
            }
            
            m_KorisniciRepository.Sacuvaj(korisnik);
        }

        public IEnumerable<Korisnik> VratiSveKorisnike()
        {
            return m_KorisniciRepository.VratiSve();
        }

        public void ObrisiKorisnika(Korisnik korisnik)
        {
            m_KorisniciRepository.Obrisi(korisnik);
        }

        public Korisnik VratiKorisnikaPoKorisnickomImenu(string korisnickoIme)
        {
            return m_KorisniciRepository.VratiPoKorisnickomImenu(korisnickoIme);
        }
    }
}